#pragma once

// Disable some warning to get clean build at warning level 4
/* nonstandard extension 'single line comment' was used */
#pragma warning(disable: 4001)

// signed/unsigned mismatch
#pragma warning(disable: 4018)

// typedef used as synonym
#pragma warning(disable: 4097)

// unreferenced formal parameter
#pragma warning(disable :4100)

// conditional expression is constant
#pragma warning(disable: 4127)

// unary minus operator applied to unsigned type, result still unsigned
#pragma warning(disable: 4146)

// nonstandard extension used : nameless struct/union
#pragma warning(disable: 4201)

// 'argument' : conversion from 'LPARAM' to 'LONG', possible loss of data
#pragma warning(disable: 4244)

// conversion from 'LONGLONG' to 'ULONGLONG', signed/unsigned mismatch
#pragma warning(disable: 4245)

// template .h and .cpp not in one file
#pragma warning(disable: 4251)

// 'argument' : conversion from 'size_t' to 'int', possible loss of data
#pragma warning(disable: 4267)

// C++ Exception Specification ignored
#pragma warning(disable: 4290)

// 'type cast' : conversion from 'unsigned int' to 'HMENU' of greater size
#pragma warning(disable: 4302)
#pragma warning(disable: 4311)

// 'type cast' : conversion from 'LONG' to 'HINSTANCE' of greater size
#pragma warning(disable: 4312)

// 'class' : default constructor could not be generated
#pragma warning(disable: 4510)

// 'class' : copy constructor could not be generated
#pragma warning(disable: 4511)

// 'class' : assignment operator could not be generated
#pragma warning(disable: 4512)

// unreferenced inline function has been removed
#pragma warning(disable: 4514)

// object 'class' can never be instantiated - user-defined constructor required
#pragma warning(disable: 4610)

// Note: Creating precompiled header
#pragma warning(disable: 4699)

// function not inlined
#pragma warning(disable: 4710)

// Disable warnings from STL
#pragma warning(disable: 4786)

// 'wsprintf': name was marked as #pragma deprecated
#pragma warning(disable: 4995)